package com.essg.sdc.study;

import com.essg.sdc.base.BaseAlgo;

/**
 * <H1>新人社員向けアルゴリズム(Java)</H1>
 *<H2>アルゴリズム（テーブルサーチ）</H2><br>
 *<ol>
 *	<li>テーブルサーチ用部署・課名称配列を部署コード+課コードで昇順に並べ替える。
 *	<li>社員情報の部署コード、課コードをテーブルサーチ用部署・課名称配列を使用して名称に変更する。
 *</ol>
 *
 * @author ess0034
 */
public class TableSearch extends BaseAlgo {

	/**
	 * コントロールブレーク　トランキー
	 */
	private EmpData mTrEmp;

	/**
	 * <H2>テーブルサーチ　コンストラクタ</H2>
	 * <ol>
	 * 	<li>Superクラスを実行することにより以下の内容を作成する。
	 * 	<li>テーブルサーチ用部署・課名称配列を作成する。
	 * 	<li>社員情報を作成する。
	 * </ol>
	 */
	public TableSearch() {
		super(ALGO_TYPE.TABLESEARCH);
	}

	/**
	 * <H2>社員情報一覧表示（部署・課名称設定）</H2><P>
	 * 社員情報を一覧表示する。
	 * 表示時に部署・課名称を設定する。
	 */
	@Override
	public void ListAlgo() {

		innerSort();
		mTrEmp = nextEmp();
		while(!mTrEmp.getDivcd().equals(HIGH_VALUE)){
			 printDetail();
			mTrEmp = nextEmp();
		}

	}

	/**
	 * <H2>インナーソートの実行</H2>
	 * <ol>
	 * 	<li>テーブルサーチ用部署・課名称配列を昇順に並べ変える。
	 * </ol>
	 */
	private void innerSort(){

		String _wk;

		for(int i=0;i<mDivsionName.length-1;i++){

			for(int j=i+1;j<mDivsionName.length;j++){
				if(Integer.parseInt(mDivsionName[i].substring(0,5)) > Integer.parseInt(mDivsionName[j].substring(0,5))){
					_wk = mDivsionName[j];
					mDivsionName[j] = mDivsionName[i];
					mDivsionName[i] = _wk;
				}
			}
		}

	}

	/**
	 * <H2>社員情報表示（部署・課名称設定）</H2><P>
	 * テーブルサーチ用部署・課名称配列を使用して部署・課名称を設定し社員情報を表示する。<P>
	 *
	 */
	private void printDetail(){

		String _detail;

		for(int i=0;i<mDivsionName.length;i++){
			String _ds = mDivsionName[i].split(",")[0];
			if(_ds.equals(mTrEmp.getDivcd()+mTrEmp.getSeccd())){
				_detail = mDivsionName[i].split(",")[1] + " " + mTrEmp.getEsscd() + " " + mTrEmp.getName() + String.format(" \\%1$0,3d", mTrEmp.getPay());
				System.out.println(_detail);
				return;
			}
		}

	}

	/**
	 * TableSearchの実行メイン
	 * @param args 実行パラメタ（今回は未使用）
	 * TableSearchをインスタンス化し、ListAlgo(社員情報一覧)を実行
	 */
	public static void main(String[] args) {

		TableSearch _obj = new TableSearch();
		_obj.ListAlgo();

	}

}
